Because a member function is meaningless without an object to invoke it on, you can't do this directly (if 'X' were rewritten in C++, it would probably pass references to *objects* around, not just pointers to fns; naturally the objects would embody the required function and probably a whole lot more).
As a patch for existing software, use a free function as a wrapper which takes an object obtained through some other technique (held in a global, perhaps) and calls the desired member function. There is one exception: static member functions do not require an actual object to be invoked, and ptrs-to-static- member-fns are type compatible with regular ptrs-to-fns (see ARM p.25, 158).
Ex: suppose you want to call X::memfn() on interrupt:
class X {
public:
void memfn();
static void staticmemfn(); //a static member fn can handle it
//...
};
//wrapper fn remembers the object on which to invoke memfn in a static var: